package base.jdk8_demo.lambda.demo01;

import org.junit.Test;

import java.util.*;

/**
 * lambda表达式引入入门
 */
public class Demo01 {

    /**
     * jdk7 及以下往有序集合中存入数据，需要自定义实现Comparator比较大小的实现。
     */
    @Test
    public void testJdk7(){
        Comparator<Integer> com = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        };
        //1.有序的TreeSet对象（自身保证有序）
        TreeSet<Integer> set = new TreeSet<>(com);//TreeSet有序映射集合
        set.addAll(Arrays.asList(5,2,8,9,-5,3,7,6,3,5));

        for (Integer integer : set) {
            System.out.print(integer+",");
        }
        System.out.println();
        System.out.println("-----------------------------------");
        //2、有序的List对象（使用工具类sort一下）
        List<Integer> list = Arrays.asList(-1,-3,5,2,8,9,-5,3,7,6,3);
        Collections.sort(list, com);
        System.out.println(list);

    }

    /**
     * jdk8 后使用 lambda表达式实现有序集合存储数据。
     */
    @Test
    public void testJdk8(){
//        Comparator<Integer> com = (x,y) -> Integer.compare(x, y);
        // notice
        /* Comparator.comparingInt内部还是比较c1,c2两个数字  */
        Comparator<Integer> com = Comparator.comparingInt(x -> -x);

        TreeSet<Integer> set = new TreeSet<>(com);
        set.addAll(Arrays.asList(5,2,8,9,-5,3,7,6));

        for (Integer integer : set) {
            System.out.print(integer+",");
        }
    }

}
